package com.gs.business.comadi.entrate;

import java.util.ArrayList;
import java.util.HashMap;

import com.gs.business.cache.CacheEntrate;
import com.gs.domain.Entrate;
import com.gs.domain.wrapper.WrapEntrate;
import comi.gsi.command.ICommand;
import comi.gsi.command.javabeancommand.AbstractCommandForJavaBean;
import comi.gsi.command.javabeancommand.AbstractOggettoEntita;

public class CommandDeleteAllEntrate extends AbstractCommandForJavaBean implements ICommand {

	private AbstractOggettoEntita[] entities = null;

	public CommandDeleteAllEntrate() {
		final CacheEntrate cache = CacheEntrate.getSingleton();
		mappaCache = (HashMap<String, AbstractOggettoEntita>) cache.getCache();
		this.wrap = new WrapEntrate();
		this.entita = null;
		riempiEntities(entities);
	}

	private void riempiEntities(AbstractOggettoEntita[] entities2) {
		ArrayList<Entrate> vettoreCategorie = CacheEntrate.getSingleton().getAllEntrateForUtente();
		entities2 = new AbstractOggettoEntita[vettoreCategorie.size()];
		int i = 0;
		for (Object element : vettoreCategorie) {
			Entrate entrata = (Entrate) element;
			Entrate entrataClonata = entrata.clona();
			entities2[i] = entrataClonata;
		}

	}

	@Override
	public boolean execute() {
		if (wrap.deleteAll()) {
			mappaCache.clear();
			return true;
		}
		return false;
	}

	@Override
	public boolean unExecute() {
		for (AbstractOggettoEntita entitie : entities) {

			if (entitie instanceof Entrate) {
				if (wrap.insert(entita)) {
					mappaCache.put(entitie.getIdEntita(), entitie);
					return true;
				}
			}
		}
		return false;
	}

	@Override
	public String toString() {
		return "Eliminate tutte le Entrate ";
	}

	@Override
	public void scriviLogExecute(final boolean isComandoEseguito) {
		if (isComandoEseguito) {
			//			Alert.operazioniSegnalazioneInfo("Ok, entrata" + entita.getnome() + " eliminata correttamente!");
		}
	}

	@Override
	public void scriviLogUnExecute(final boolean isComandoEseguito) {
		if (isComandoEseguito) {
			//			Alert.operazioniSegnalazioneInfo("Ok, ripristinata entrata" + entita.getnome() + " precedentemente eliminata!");
		}
	}

}
